shadowsvalue: Don't draw invisible box shadows
authorTimm Bäder <mail@baedert.org>
Sat, 30 Apr 2016 19:06:07 +0000 (21:06 +0200)
committerTimm Bäder <mail@baedert.org>
Mon, 2 May 2016 17:28:33 +0000 (19:28 +0200)
gtk/gtkcssshadowvalue.c

index 93b4dcf9275b6f3d79f654942f6bce26cc8a84aa..35d3df764a93d5cb7027df9751acff0d076d8241 100644 (file)
@@ -516,6 +516,10 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow,
 {
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
+  /* We don't need to draw invisible shadows */
+  if (gtk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
+    return;
+
   if (!cairo_has_current_point (cr))
     cairo_move_to (cr, 0, 0);
 
@@ -558,6 +562,10 @@ _gtk_css_shadow_value_paint_icon (const GtkCssValue *shadow,
 
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
+  /* We don't need to draw invisible shadows */
+  if (gtk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
+    return;
+
   cairo_save (cr);
   pattern = cairo_pattern_reference (cairo_get_source (cr));
 
@@ -875,6 +883,10 @@ _gtk_css_shadow_value_paint_box (const GtkCssValue   *shadow,
 
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
+  /* We don't need to draw invisible shadows */
+  if (gtk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
+    return;
+
   cairo_clip_extents (cr, &x1c, &y1c, &x2c, &y2c);
   if ((shadow->inset && !_gtk_rounded_box_intersects_rectangle (padding_box, x1c, y1c, x2c, y2c)) ||
       (!shadow->inset && _gtk_rounded_box_contains_rectangle (padding_box, x1c, y1c, x2c, y2c)))